package com.wawu.common.utils;

import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.filter.logging.Slf4jLogFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.wawu.common.property.DatasourceProperty;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class DruidUtil {
    private static DruidDataSource dataSource;
    static {
        dataSource=new DruidDataSource();
        dataSource.setUrl(DatasourceProperty.URL);
        dataSource.setDriverClassName(DatasourceProperty.DRIVER_CLASS_NAME);
        dataSource.setUsername(DatasourceProperty.USERNAME);
        dataSource.setPassword(DatasourceProperty.PASSWORD);

        //其他配置参数
            //日志输出相关配置
//        try {
//            dataSource.setFilters("stat,slf4j"); // 启用日志过滤器
//        } catch (SQLException e) {
//            throw new RuntimeException(e);
//        }
//        // 配置 Slf4jLogFilter
//        Slf4jLogFilter slf4jLogFilter = new Slf4jLogFilter();
//        // 配置打印 SQL 语句
//        slf4jLogFilter.setStatementLogEnabled(true); // 启用语句日志
//        slf4jLogFilter.setStatementExecutableSqlLogEnable(true); // 打印可执行 SQL
//        // 配置打印错误日志
//        slf4jLogFilter.setStatementLogErrorEnabled(true);
//        // 配置打印结果集
//        slf4jLogFilter.setResultSetLogEnabled(true); // 打印 SQL 查询结果
//
//                //TODO 数据库日志输出就是配不出来
//        // 将日志过滤器添加到 Druid 数据源
//        List<Filter> filters = new ArrayList<>();
//        filters.add(slf4jLogFilter);
//        dataSource.setProxyFilters(filters);

            // 打印 SQL 日志配置成功消息
        System.out.println("Druid DataSource initialized with SQL logging enabled.");
            //日志输出结束
        dataSource.setInitialSize(5); // 初始化连接数
        dataSource.setMinIdle(5); // 最小空闲连接数
        dataSource.setMaxActive(20); // 最大活动连接数
        dataSource.setMaxWait(60000); // 最大等待时间
        dataSource.setValidationQuery("SELECT 1"); // 连接校验查询
    }
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
}
